import { defineConfig } from 'vite'
import vue from '@vitejs/plugin-vue'
import legacy from '@vitejs/plugin-legacy'
import babel from '@rollup/plugin-babel'


import AutoImport from "unplugin-auto-import/vite";
import ElementPlus from "unplugin-element-plus/vite";
import { VueRouterAutoImports } from "unplugin-vue-router";
import VueRouter from "unplugin-vue-router/vite";
import { ElementPlusResolver } from "unplugin-vue-components/resolvers";

import Components from "unplugin-vue-components/vite";

// import path from "path";

// const pathSrc = path.resolve(__dirname, "src");

// https://vite.dev/config/
export default defineConfig({
  // base: '/app',
  // plugins: [vue()],
  // esbuild: {
  //   target: 'es2015' // 或更低版本
  // },
  // esbuild: {
  //   // 开发和生产环境都转译
  //   target: 'es2019'
  // },
  // build: {
  //   target: 'es2015' // 降级目标
  // },
  // optimizeDeps: {
  //   include: ['monaco-editor'] // 确保预构建
  // },
  // // 关键配置：强制转译 node_modules 中的 monaco-editor
  // esbuild: {
  //   target: 'es2015',
  //   include: [/monaco-editor\/esm\/.*\.js/] // 匹配其 ESM 入口
  // },
  plugins: [
    VueRouter({
      routesFolder: 'src/pages', // 指定扫描目录
      extensions: ['.vue'], //指定文件后缀
      exclude: ["**/components/*.*"], // 排除指定文件
      importMode: 'async',
    }),
    vue(),
    // legacy({
    //   targets: ['chrome >= 83'], // 设置你需要的浏览器最低版本
    //   modernPolyfills: true
    // }),
    // babel({
    //   babelHelpers: 'bundled',
    //   extensions: ['.js', '.jsx', '.ts', '.tsx', '.vue'], // 移除了 .css
    //   exclude: '**/*.css', // 明确排除 CSS 文件
    //   presets: [
    //     [
    //       '@babel/preset-env',
    //       {
    //         targets: { chrome: '83' }
    //       }
    //     ]
    //   ]
    // })
    ElementPlus({}),
    AutoImport({
      imports: [
        VueRouterAutoImports,
        {
          // add any other imports you were relying on
          "vue-router/auto": ["useLink"],
        },
      ],
      resolvers: [ElementPlusResolver()],
      eslintrc: {
        enabled: true,
      },
    }),
    Components({
      resolvers: [ElementPlusResolver()],
    }),
    babel({
      configFile: true,
      // babelHelpers: 'bundled',
      // extensions: ['.js', '.jsx', '.ts', '.tsx', '.vue'],
      // // exclude: '**/*.css', // 明确排除 CSS 文件
      // exclude: [
      //   '**/*.css',
      //   '**/*.scss',
      //   /\.vue\?vue&type=style/, // 明确排除 Vue 文件的 style 块
      //   /node_modules/ // 排除 node_modules
      // ],
      // presets: [
      //   ['@babel/preset-env', {
      //     targets: { chrome: '83' }, // 你的目标浏览器版本
      //     shippedProposals: true // 支持较新的提案特性
      //   }]
      // ]
    })
  ],

  
  // optimizeDeps: {
  //   include: ['vue', 'vue-router'] // 确保这些依赖被预构建
  // },
  // AutoImport({
  //   // 自动导入 Vue 相关函数，如：ref, reactive, toRef 等
  //   imports: ["vue"],
  //   eslintrc: {
  //     enabled: true, // 是否自动生成 eslint 规则，建议生成之后设置 false 
  //     filepath: "./.eslintrc-auto-import.json", // 指定自动导入函数 eslint 规则的文件
  //   },
  //   dts: path.resolve(pathSrc, "types", "auto-imports.d.ts"), // 指定自动导入函数TS类型声明文件路径
  // }),
  // Components({
  //   dts: path.resolve(pathSrc, "types", "components.d.ts"), // 指定自动导入组件TS类型声明文件路径
  // }),
  server: {
    port: 8889,
    open: true, // 自动打开浏览器
    // proxy: {
    //   [env.VITE_APP_BASE_API]: {
    //     // target: 'http://192.168.1.118',
    //     // target: 'http://192.168.1.19:8114',
    //     target: 'http://10.1.25.211',
    //     changeOrigin: true,
    //     rewrite: (path) => {
    //       return path.replace(new RegExp('^' + env.VITE_APP_BASE_API), '')
    //     },
    //   },
    // },
  },
})
